Previous: Macro Backslashes, Up: Custom Macros [Contents][Index]
Macros which needn’t (or mustn’t) be followed by a
semicolon when you invoke them, macros with semicolons,
are very common. These can cause CC Mode to parse the next line
wrongly as a statement-cont (see Function Symbols)
and thus mis-indent it.
You can prevent this by specifying which macros have semicolons. It doesn’t matter whether or not such a macro has a parameter list:
This buffer-local variable specifies which macros have
semicolons. After setting its value, you need to call
c-make-macro-with-semi-re for it to take effect.
It should be set to one of these values:
There are no macros with semicolons.
Each string is the name of a macro with a semicolon.
Only valid #define names are allowed here.
For example, to set the default value, you could write
the following into your .emacs:
(setq c-macro-names-with-semicolon
'("Q_OBJECT" "Q_PROPERTY" "Q_DECLARE" "Q_ENUMS"))
This matches each symbol which is a macro with a
semicolon. It must not match any string which isn’t
a valid #define name. For example:
(setq c-macro-names-with-semicolon
"\\<\\(CLEAN_UP_AND_RETURN\\|Q_[[:upper:]]+\\)\\>")
Call this (non-interactive) function, which sets internal
variables, each time you change the value of
c-macro-names-with-semicolon. It takes no
arguments, and its return value has no meaning. This function
is called by CC Mode’s initialization code.